home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Software Contest 3
/
FM Towns Software Contest 3.iso
/
exp
/
an
/
animefm2.bas
< prev
next >
Wrap
BASIC Source File
|
1994-01-07
|
16KB
|
393 lines
10 '
20 SCREEN@0:CLS:COLOR 7,0,7,4:CONSOLE 0,25,0:WIDTH 80,25:DEFINT A-C,E-Z
30 MOUSE 0
40 A=0:MA=0:B=0:C=0
50 DIM PX(31,15,7),PY(31,15,7),MP(15)
60 DIM ED(15,7),PC(15):FOR I=0 TO 15:PC(I)=7:NEXT I
70 GOSUB *OP1
80 MOUSE 4,0,0,639,479:CLS
90 MX=0:MY=0:ST=1:D$="A":SW=1:F$=""
100 'エディターメイン
110 GOSUB *LO
120 MOUSE 1,,,1:IF MOUSE(2,0) OR MOUSE(2,1) THEN 120
130 MX=MOUSE(0):MY=MOUSE(1):LOCATE 40,0:PRINT USING"POINT##/## PAT##/## PAGE##/## X### Y###";A;MA;B+1;MB+1;C+1;MC+1;MX;MY
140 IF MOUSE(2,0) THEN 170
150 IF MOUSE(2,1) THEN 1120
160 GOTO 130
170 MOUSE 1,,,0
180 IF MY<16 THEN 190 ELSE 270
190 X=MX\8:'770,500,630,870,980,2000,1500,2500
200 IF X<=8 THEN 750 'パターン確定
210 IF X=15 OR X=16 THEN 440 'パターン番号+
220 IF X=17 OR X=18 THEN 590 'パターン番号-
230 IF X=25 OR X=26 THEN 860 'ページ番号 +
240 IF X=27 OR X=28 THEN 990 'ページ番号 -
250 IF X<=37 AND X>=30 AND ST=1 THEN 2680'メニュー画面へ
260 GOTO 120
270 IF MY<20 THEN 120
280 IF MP(B)=0 AND C>0 THEN 120
290 IF MP(B) AND MA=A THEN 120
300 IF ED(B,C) THEN 120
310 IF A=31 THEN 120
320 ST=0
330 IF PY(A,B,C)>0 THEN 390
340 CIRCLE(MX,MY),4,5:PSET(MX,MY),5
350 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(A,B,C-1),PY(A,B,C-1))-(MX,MY),PSET,6,,&HA0A0
360 PX(A,B,C)=MX:PY(A,B,C)=MY
370 '
380 GOTO 120
390 LINE -(MX,MY),PSET,5
400 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(A+1,B,C-1),PY(A+1,B,C-1))-(MX,MY),PSET,6,,&HA0A0
410 IF MP(B)=0 AND MA<31 AND A=MA THEN MA=MA+1
420 A=A+1:PX(A,B,C)=MX:PY(A,B,C)=MY
430 GOTO 120
440 'パターン番号+1
450 IF B=MB THEN 120
460 IF ST=0 THEN 120
470 IF ED(B,C) THEN 480 ELSE 520
480 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
490 IF I THEN LINE -(PX,PY),PSET,1 ELSE CIRCLE(PX,PY),4,1:PSET(PX,PY),1
500 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,1,,&HA0A0
510 NEXT I
520 B=B+1:ST=1
530 IF ED(B,C) THEN A=MP(B):GOTO 540 ELSE A=0:GOTO 580
540 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
550 IF I THEN LINE -(PX,PY),PSET,4 ELSE CIRCLE(PX,PY),4,4:PSET(PX,PY),4
560 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,6,,&HA0A0
570 NEXT I
580 MA=MP(B):GOTO 120
590 'パターン番号-1
600 IF B=0 THEN 120
610 IF ST=0 THEN 120
620 '
630 IF ED(B,C) THEN 640 ELSE 680
640 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
650 IF I THEN LINE -(PX,PY),PSET,1 ELSE CIRCLE(PX,PY),4,1:PSET(PX,PY),1
660 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,1,,&HA0A0
670 NEXT I
680 B=B-1:ST=1
690 IF ED(B,C) THEN A=MP(B):GOTO 700 ELSE A=0:GOTO 740
700 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
710 IF I THEN LINE -(PX,PY),PSET,4 ELSE CIRCLE(PX,PY),4,4:PSET(PX,PY),4
720 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,6,,&HA0A0
730 NEXT I
740 MA=MP(B):GOTO 120
750 'パターン確定
760 IF ST THEN 120
770 IF A=0 THEN 120
780 IF MP(B) AND MA>A THEN 120
790 '
800 IF C=0 THEN MP(B)=MA
810 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
820 IF I THEN LINE -(PX,PY),PSET,4 ELSE CIRCLE(PX,PY),4,4:PSET(PX,PY),4
830 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,1,,&HA0A0
840 NEXT I:ST=1:ED(B,C)=1
850 GOTO 440
860 'ページ番号+1
870 IF ST=0 THEN 120
880 IF MC=C THEN 120
890 '
900 CLS:C=C+1
910 FOR I=0 TO MB
920 IF ED(I,C) THEN 930 ELSE 970
930 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
940 IF J THEN LINE -(PX,PY),PSET,1-(I=0)*3 ELSE CIRCLE(PX,PY),4,1-(I=0)*3:PSET(PX,PY),1-(I=0)*3
950 IF C>0 AND (SW AND ED(I,C+(C>0))) THEN LINE (PX(J,I,C-1),PY(J,I,C-1))-(PX,PY),PSET,6+5*(I>0),,&HA0A0
960 NEXT J
970 NEXT I:ST=1:B=0:MA=MP(B):A=MA*ED(B,C)
980 GOTO 100
990 'ページ番号-1
1000 IF ST=0 THEN 120
1010 IF C=0 THEN 120
1020 '
1030 CLS:C=C-1
1040 FOR I=0 TO MB
1050 IF ED(I,C) THEN 1060 ELSE 1100
1060 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
1070 IF J THEN LINE -(PX,PY),PSET,1-(I=0)*3 ELSE CIRCLE(PX,PY),4,1-(I=0)*3:PSET(PX,PY),1-(I=0)*3
1080 IF C>0 AND (SW AND ED(I,C+(C>0))) THEN LINE (PX(J,I,C-1),PY(J,I,C-1))-(PX,PY),PSET,6+5*(I>0),,&HA0A0
1090 NEXT J
1100 NEXT I:ST=1:B=0:MA=MP(B):A=MA*ED(B,C)
1110 GOTO 100
1120 '訂正(マウス右ボタン)
1130 IF A=0 THEN 120
1140 IF C=0 AND MP(B)=0 THEN 120
1150 IF A=0 AND ST=1 AND ED(B,C)=0 THEN 120
1160 MOUSE 1,,,0
1170 IF A=0 THEN A=MA
1180 CLS 5:GOSUB *LO
1190 FOR I=0 TO MB
1200 IF ED(I,C) THEN 1210 ELSE 1260
1210 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
1220 IF MP(I)=0 THEN 1250
1230 IF I=B THEN 1250
1240 IF J THEN LINE -(PX,PY),PSET,1 ELSE CIRCLE(PX,PY),4,1:PSET(PX,PY),1
1250 NEXT J
1260 NEXT I
1270 IF A>0 THEN PX(A,B,C)=0:PY(A,B,C)=0:A=A-1
1280 IF A=0 THEN ST=-1*(C>0):ED(B,C)=0:PX(0,B,C)=0:PY(0,B,C)=0:GOTO 1330
1290 FOR I=0 TO A:PX=PX(I,B,C):PY=PY(I,B,C)
1300 IF I THEN LINE -(PX,PY),PSET,5 ELSE CIRCLE(PX,PY),4,5:PSET(PX,PY),5
1310 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,6,,&HA0A0
1320 NEXT I:ST=0:ED(B,C)=0
1330 GOTO 120
1340 'データ保存
1350 CLS:PRINT"保存":LOCATE 0,1:PRINT"ドライブ:";D$:PRINT"Yes→RETURN Key/No→A~P Key/EXIT→ESC Key"
1360 I$=INPUT$(1)
1370 IF I$=CHR$(13) THEN 1410
1380 IF I$=>"A" AND I$<="Z" THEN D$=I$:GOTO 1410
1390 IF I$=>"a" AND I$<="z" THEN D$=CHR$(ASC(I$)-32):GOTO 1410
1400 IF I$=CHR$(27) THEN 2870 ELSE BEEP:GOTO 1360
1410 LOCATE 10,1:PRINT D$
1420 PRINT :FILES D$+":*.ANM":PRINT:Y=CSRLIN
1430 L=LEN(F$)
1440 LOCATE 0,Y:PRINT USING "保存ファイル名[& &.ANM]";F$
1450 IF L<8 THEN LOCATE 16+L,Y:PRINT"<"
1460 '
1470 LOCATE L+65,Y:I$=INPUT$(1)
1480 IF I$=CHR$(8) AND L>0 THEN F$=LEFT$(F$,L-1):L=L-1:GOTO 1430
1490 IF I$=CHR$(13) AND L>0 THEN 1540
1500 IF I$>="0" AND I$<="Z" AND L<8 THEN F$=F$+I$:L=L+1:GOTO 1430
1510 IF I$>="a" AND I$<="z" AND L<8 THEN F$=F$+CHR$(ASC(I$)-32):L=L+1:GOTO 1430
1520 IF I$=CHR$(27) THEN 2870
1530 GOTO 1450
1540 ON ERROR GOTO 3620
1550 OPEN "O",#1,F$+".ANM":PRINT:PRINT"Now Saving..."
1560 PRINT#1,C;MC;B;MB;A;MA;ST
1570 FOR I=0 TO MC:FOR J=0 TO MB:FOR K=0 TO 31
1580 PRINT#1,PX(K,J,I);PY(K,J,I)
1590 NEXT K,J,I
1600 FOR I=0 TO 7:FOR J=0 TO 15:PRINT#1,ED(J,I):NEXT J,I
1610 FOR I=0 TO 15:PRINT#1,MP(I);PC(I):NEXT I:CLOSE #1:ON ERROR GOTO 0
1620 GOTO 2870
1630 'アニメーション実行
1640 F=0:LOCATE 0,1
1650 FOR I=0 TO MC:PRINT USING"PAGE ## チェック中";I+1
1660 FOR J=0 TO MB
1670 '
1680 IF ED(J,I)=0 THEN F=1:PRINT USING" PATTERN ## が設定されていません";J+1:BEEP
1690 NEXT J,I
1700 IF F=1 THEN BEEP ELSE 1740
1710 PRINT"なにかキーを押してください"
1720 IF INKEY$<>"" OR MOUSE(2,0) THEN 1720
1730 IF INKEY$<>"" OR MOUSE(2,0) THEN CLS:GOTO 2870 ELSE 1730
1740 GOSUB *OP2:MOUSE 1,,,0
1750 ON GP GOTO 1900,2020
1760 'ノーマル
1770 FOR I=0 TO MC-1
1780 FOR N=0 TO PT:CLS
1790 FOR J=0 TO MB
1800 FOR K=0 TO MP(J)
1810 DX=(PX(K,J,I)-PX(K,J,I+1))/PT
1820 DY=(PY(K,J,I)-PY(K,J,I+1))/PT
1830 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
1840 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
1850 NEXT K,J
1860 FOR M=0 TO WT*16:NEXT M
1870 NEXT N
1880 NEXT I:GOTO 2280
1890 'リバース
1900 FOR I=MC TO 1 STEP -1
1910 FOR N=0 TO PT:CLS
1920 FOR J=0 TO MB
1930 FOR K=0 TO MP(J)
1940 DX=(PX(K,J,I)-PX(K,J,I-1))/PT
1950 DY=(PY(K,J,I)-PY(K,J,I-1))/PT
1960 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
1970 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
1980 NEXT K,J
1990 FOR M=0 TO WT*16:NEXT M
2000 NEXT N
2010 NEXT I:GOTO 2280
2020 'リターン(ノーマル+リバース)
2030 FOR I=0 TO MC-1
2040 FOR N=0 TO PT:CLS
2050 FOR J=0 TO MB
2060 FOR K=0 TO MP(J)
2070 DX=(PX(K,J,I)-PX(K,J,I+1))/PT
2080 DY=(PY(K,J,I)-PY(K,J,I+1))/PT
2090 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
2100 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
2110 NEXT K,J
2120 FOR M=0 TO WT*16:NEXT M
2130 NEXT N
2140 NEXT I
2150 FOR I=MC TO 1 STEP -1
2160 FOR N=0 TO PT:CLS
2170 FOR J=0 TO MB
2180 FOR K=0 TO MP(J)
2190 DX=(PX(K,J,I)-PX(K,J,I-1))/PT
2200 DY=(PY(K,J,I)-PY(K,J,I-1))/PT
2210 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
2220 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
2230 NEXT K,J
2240 FOR M=0 TO WT*16:NEXT M
2250 NEXT N
2260 NEXT I:GOTO 2280
2270 '
2280 LOCATE 30,20:PRINT"なにかキーを押してください":MOUSE 0
2290 IF INKEY$<>"" OR MOUSE(2,0) THEN CLS:GOSUB *SCREENPUT:GOTO 2870 ELSE 2290
2300 *SCREENPUT
2310 C=0:B=0:A=MP(B):MA=MP(B):ST=1:SCREEN@0:CLS
2320 FOR I=0 TO MB
2330 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
2340 IF J THEN LINE -(PX,PY),PSET,1-(I=0)*3 ELSE CIRCLE(PX,PY),4,1-(I=0)*3:PSET(PX,PY),1-(I=0)*3
2350 NEXT J
2360 NEXT I
2370 RETURN
2380 'データ読み込み
2390 '
2400 CLS:PRINT "読み込み":LOCATE 0,1:PRINT"ドライブ:";D$:PRINT"変更無し→RETURN Key/変更する→A~P Key/戻る→ESC Key"
2410 I$=INPUT$(1)
2420 IF I$=CHR$(13) THEN 2460
2430 IF I$=>"A" AND I$<="Z" THEN D$=I$:GOTO 2460
2440 IF I$=>"a" AND I$<="z" THEN D$=CHR$(ASC(I$)-32):GOTO 2460
2450 IF I$=CHR$(27) THEN 2870 ELSE BEEP:GOTO 2410
2460 LOCATE 10,1:PRINT D$
2470 PRINT :FILES D$+":*.ANM":PRINT:Y=CSRLIN
2480 L=LEN(F$)
2490 LOCATE 0,Y:PRINT USING "読み込みファイル名[& &.ANM]";F$
2500 IF L<8 THEN LOCATE 20+L,Y:PRINT"<"
2510 '
2520 I$=INPUT$(1)
2530 IF I$=CHR$(8) AND L>0 THEN F$=LEFT$(F$,L-1):L=L-1:GOTO 2480
2540 IF I$=CHR$(13) AND L>0 THEN 2590
2550 IF I$>="a" AND I$<="z" AND L<8 THEN F$=F$+CHR$(ASC(I$)-32):L=L+1:GOTO 2480
2560 IF I$>="0" AND I$<="Z" AND L<8 THEN F$=F$+I$:L=L+1:GOTO 2480
2570 IF I$=CHR$(27) THEN 2670
2580 GOTO 2500
2590 ON ERROR GOTO 3800:OPEN "I",#1,F$+".ANM"
2600 PRINT:PRINT"Now Loading..."
2610 INPUT#1,C,MC,B,MB,A,MA,ST
2620 FOR I=0 TO MC:FOR J=0 TO MB:FOR K=0 TO 31
2630 INPUT#1,PX(K,J,I),PY(K,J,I)
2640 NEXT K,J,I
2650 FOR I=0 TO 7:FOR J=0 TO 15:INPUT#1,ED(J,I):NEXT J,I
2660 FOR I=0 TO 15:INPUT#1,MP(I),PC(I):NEXT I:CLOSE #1:ON ERROR GOTO 0
2670 CLS:GOSUB *SCREENPUT:GOTO 2870
2680 'メニュー
2690 P1$="エディットアニメ実行データ保存データ読込初期化"
2700 LINE(0,0)-(639,19),PSET,0,BF:LOCATE 0,0:PRINT SPC(80):MOUSE 1,32,8,1
2710 FOR I=0 TO 4:COLOR ,%VAL(MID$("45662",I+1,1))
2720 SYMBOL(I*88,0),MID$(P1$,I*10+1,10),1,1,VAL(MID$("45662",I+1,1)),,,23
2730 NEXT I:COLOR 7,0
2740 MOUSE 4,0,0,416,32
2750 IF MOUSE(2,0) THEN 2750
2760 MX=MOUSE(0)\8:MY=MOUSE(1)\16
2770 IF MY>0 THEN 2760
2780 IF MOUSE(2,0) THEN 2800
2790 IF MOUSE(2,1) THEN 2870 ELSE 2760
2800 '
2810 IF MX<=9 THEN 2870 'エディットへ
2820 IF MX>=11 AND MX<=20 THEN MOUSE 1,,,0:GOTO 1630'アニメ実行
2830 IF MX>=22 AND MX<=31 THEN MOUSE 1,,,0:GOTO 1340'データ保存
2840 IF MX>=33 AND MX<=42 THEN MOUSE 1,,,0:GOTO 2380'データ読み込み
2850 IF MX>=44 AND MX<=49 THEN 2910
2860 GOTO 2750
2870 'エディットへ
2880 CLS 1
2890 MOUSE 4,0,0,639,479
2900 GOTO 100
2910 '初期化
2920 LOCATE 55,0:PRINT"Are you sure ? (Y/N)";
2930 IF MOUSE(2,0) THEN 2930
2940 I$=INKEY$
2950 IF INKEY$="Y" OR INKEY$="y" OR MOUSE(2,0) THEN ERASE PX,PY,MP,ED,PC:GOTO 10
2960 IF INKEY$="N" OR INKEY$="n" OR MOUSE(2,1) THEN 2870 ELSE 2940
2970 *OP1
2980 MOUSE 1,,,0:CLS
2990 LINE(110,132)-(549,370),PSET,%8,BF
3000 LINE(100,120)-(539,359),PSET,%7,BF
3010 LINE(100,120)-(539,359),PSET,%15,B
3020 SYMBOL(240,135),"コントロールパネル",1,1,%15,,,6
3030 COLOR 1:LOCATE 60,17:PRINT"確定":LINE(480,322)-(512,341),PSET,6,BF:LINE(479,321)-(513,342),PSET,0,B
3040 LINE (160,321)-(231,339),PSET,6,BF:LINE(160,321)-(231,339),PSET,0,B
3050 LINE (320,321)-(408,339),PSET,6,BF:LINE(320,321)-(408,339),PSET,0,B
3060 COLOR 7
3070 LINE(239,306)-(255,323),PSET,7,BF:LINE(415,322)-(431,339),PSET,7,BF
3080 LINE(239,325)-(255,342),PSET,7,BF:LINE(433,339)-(448,322),PSET,7,BF
3090 MC=1:MB=0:MOUSE 4,100,100,549,370
3100 COLOR 1:LOCATE 20, 17:PRINT USING"ページ ##";MC+1:COLOR 0:LOCATE 30,16:PRINT"-"
3110 LOCATE 30,17:PRINT"+":COLOR 1:LOCATE 40,17:PRINT USING"パターン ##";MB+1:COLOR 0:LOCATE 52,17:PRINT"-+":LINE(136,154)-(510,305),PSET,%7,BF
3120 FOR I=0 TO MC:FOR J=0 TO MB
3130 LINE(J*24+128+8,I*18+154)-(J*24+150,I*18+170),PSET,7,BF
3140 LINE(J*24+128+8,I*18+154)-(J*24+150,I*18+170),PSET,0,B
3150 NEXT J,I:COLOR 6
3160 MOUSE 1,,,1
3170 MX=MOUSE(0)\8:MY=MOUSE(1)\20
3180 IF MOUSE(2,0) THEN 3200
3190 GOTO 3170
3200 IF MY=16 AND MX>=60 AND MX<=63 THEN 3260
3210 IF MY=15 AND (MX=30 OR MX=31) AND MC>1 THEN MC=MC-1:GOTO 3100
3220 IF MY=16 AND (MX=30 OR MX=31) AND MC<7 THEN MC=MC+1:GOTO 3100
3230 IF MY=16 AND (MX=52 OR MX=53) AND MB>0 THEN MB=MB-1:GOTO 3100
3240 IF MY=16 AND (MX=54 OR MX=55) AND MB<15 THEN MB=MB+1:GOTO 3100
3250 GOTO 3170
3260 CLS:RETURN
3270 *OP2
3280 MOUSE 1,,,0:CLS
3290 LINE(110,132)-(549,370),PSET,%8,BF
3300 LINE(100,120)-(539,359),PSET,%7,BF
3310 LINE(100,120)-(539,359),PSET,%15,B
3320 SYMBOL(240,135),"コントロールパネル",1,1,%15,,,6
3330 COLOR 1:LOCATE 60,17:PRINT"確定":LINE(480,322)-(512,341),PSET,6,BF:LINE(479,321)-(513,342),PSET,0,B
3340 LINE(251,168)-(491,188),PSET,0,BF:LOCATE 29,9 :PRINT"少|||||||||||||||||||||||||||||||多"
3350 LINE(251,207)-(491,226),PSET,0,BF:LOCATE 29,11:PRINT"速|||||||||||||||||||||||||||||||遅"
3360 COLOR 1:LOCATE 14,13:PRINT"実行方向"
3370 LINE(251,245)-(295,264),PSET,0,BF:LOCATE 32,13:PRINT"ノーマル "
3380 LINE(307,245)-(351,264),PSET,0,BF:LOCATE 39,13:PRINT"リバース"
3390 LINE(363,245)-(407,264),PSET,0,BF:LOCATE 46,13:PRINT"リターン "
3400 COLOR 7
3410 PT=9:WT=14:AT=0:GP=0
3420 LINE(253+PT*8,171)-(258+PT*8,185),PSET,5,BF
3430 LINE(253+WT*8,209)-(258+WT*8,224),PSET,5,BF
3440 LINE(252+GP*56,246)-(294+GP*56,263),PSET,5,BF
3450 COLOR 1:LOCATE 14,9:PRINT USING"中間画像数 ##";PT+1
3460 LOCATE 14,11:PRINT USING"実行ウエイト##";WT:COLOR 7
3470 MOUSE 1,,,1:MOUSE 4,100,100,549,370
3480 MX=MOUSE(0):MY=MOUSE(1)\20
3490 IF MOUSE(2,0) THEN 3510
3500 GOTO 3480
3510 IF MY=16 AND MX\8>=60 AND MX\8<=63 THEN 3550
3520 IF MY=8 AND MX>251 AND MX<491 THEN MOUSE 1,,,0:LINE(252+PT*8,171)-(258+PT*8,185),PSET,0,BF:PT=(MX-252)\8:GOTO 3420
3530 IF MY=10 AND MX>251 AND MX<491 THEN MOUSE 1,,,0:LINE(252+WT*8,209)-(258+WT*8,224),PSET,0,BF:WT=(MX-252)\8:GOTO 3420
3540 IF MY=12 AND MX>251 AND MX<407 THEN MOUSE 1,,,0:LINE(252+GP*56,246)-(294+GP*56,263),PSET,0,BF:GP=(MX-262)\56:GOTO 3420 ELSE GOTO 3480
3550 MOUSE 1,,,0:CLS:PT=PT+1:RETURN
3560 'レイアウト(?)
3570 *LO
3580 P$="パターン確定パターン▲▼ページ▲▼メニュー":LINE(0,0)-(639,19),PSET,0,BF
3590 FOR I=0 TO 4:COLOR ,%VAL(MID$("6543",I+1,1))
3600 SYMBOL(I*80,0),MID$(P$,I*9+1,9),1,1,VAL(MID$("6543",I+1,1)),,,23
3610 NEXT I:COLOR ,0:RETURN
3620 'ERROR処理
3630 E=ERR:CLOSE
3640 RESUME 3650
3650 ON ERROR GOTO 0
3660 IF E=72 THEN PRINT"指定されたドライブにディスクが入っていません!!":GOTO 3760
3670 IF E=60 THEN PRINT"指定されたドライブは存在しません!!":GOTO 3760
3680 IF E=73 THEN PRINT"ディスクが書き込み禁止です。":GOTO 3760
3690 IF E=64 THEN PRINT"指定のファイルはすでに存在しています。":GOTO 3720
3700 PRINT"エラーが発生しました。(ERR=";E;")":GOTO 3760
3710 '
3720 PRINT"上書きしますか?(Y/N)"
3730 I$=INPUT$(1)
3740 IF I$="Y" OR I$="y" THEN KILL D$+":"+F$+".ANM":GOTO 1540
3750 IF I$="N" OR I$="n" THEN 1340 ELSE 3730
3760 PRINT"再実行→RETURN Key/やめる→ESC Key"
3770 I$=INPUT$(1)
3780 IF I$=CHR$(13) THEN 1540
3790 IF I$=CHR$(27) THEN 1340 ELSE 3770
3800 '
3810 E=ERR:CLOSE
3820 RESUME 3830
3830 ON ERROR GOTO 0
3840 IF E=63 THEN PRINT"指定のファイルが見つかりません!!":GOTO 3890
3850 IF E=72 THEN PRINT"指定されたドライブにディスクが入っていません!!":GOTO 3890
3860 IF E=60 THEN PRINT"指定されたドライブは存在しません!!":GOTO 3890
3870 PRINT"エラーが発生しました。(ERR=";E;")"
3880 '
3890 PRINT"再実行→RETURN Key/やめる→ESC Key"
3900 I$=INPUT$(1)
3910 IF I$=CHR$(13) THEN 2590
3920 IF I$=CHR$(27) THEN 2380 ELSE 3910